1. Field
Methods and programs consistent with exemplary embodiments relate to a Unified Extensible Firmware Interface (UEFI), and more particularly to loading and executing a device-less and system agnostic UEFI driver configured to filter inputs/outputs (I/O) to storage devices without requiring dependency on a Peripheral Component Interconnect (PCI) type device and/or modifying a system UEFI Basic Input/Output System (BIOS), thereby enabling a software only product supporting booting of an Operating System (OS).
2. Description of the Related Art
Generally, there exist two methods for loading a UEFI driver in a UEFI environment.
In a first method, a PCI device employs an Option-Read Only Memory (Option-ROM) UEFI driver, which resides in a ROM/flash memory on the PCI device. This Option-ROM UEFI driver is proprietary to the PCI device manufacturer and may be flashed to the PCI device ROM, and cannot be modified by third party software.
The purpose of this Option-ROM UEFI driver is to access the PCI device and its children devices during pre-OS environment. For example, a PCI-based storage controller and the disks connected to the PCI-based storage controller are accessed by system UEFI BIOS using the UEFI driver BIOS. Thus, Option-ROM BIOS is required for a PCI device to boot an OS. This requirement of a physical PCI device to load an Option-ROM BIOS makes it impossible for a software only product, such as “write-back caching” software or RAID software, to support booting an OS, as these softwares can only be loaded during the OS loading as a OS driver.
In a second method, the UEFI driver to be loaded into system may be saved in UEFI BIOS Non-Volatile Random Access Memory (NVRAM), and the system UEFI BIOS may load the UEFI driver during the startup boot procedure. This NVRAM area cannot be used by third party software developers because each system manufacturer has its own proprietary format. Accordingly, third party software trying to write to this NVRAM can damage the system beyond repair, and modifying the UEFI driver necessitates system BIOS modifications that may be performed only by the system manufacturer.